package br.edu.universo.si.projeto2.infojob.client.rpc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoConhecimentos;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoCurso;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaPerfil;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanMensagem;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanNacionalidade;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalCurriculo;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanVaga;

import com.google.gwt.user.client.rpc.RemoteService;

/**
 * Interface com métodos de acesso ao banco. 
 */
public interface Service extends RemoteService
{
	BeanAssinante login(String conta, String senha) throws Exception;
	void logoff() throws Exception;
	HashMap<Integer, String> getEstados() throws Exception;
	HashMap<Integer, String> getEstadosCivis() throws Exception;
	HashMap<Integer, String> getSetoresAtuacao() throws Exception;
	List<BeanNacionalidade> getNacionalidades() throws Exception;
	HashMap<Integer, String> getTitularidades() throws Exception;
	HashMap<Integer, String> getConhecimentos() throws Exception;
	List<BeanCurriculoConhecimentos> getCurriculoConhecimentos(Integer idCurriculo) throws Exception;
	void cadastrarEmpresaAssinante(BeanEmpresaAssinante bEmpresaAssinante) throws Exception;
	void cadastrarVaga(BeanVaga bVaga) throws Exception;
	void cadastrarEmpresaPerfil(BeanEmpresaPerfil bEmpresaPerfil) throws Exception;
	void cadastrarProfissionalAssinante(BeanProfissionalAssinante profissionalAssinante) throws Exception;
	BeanProfissionalAssinante getProfissionalById(Integer idProfissional) throws Exception;
	BeanEmpresaAssinante getEmpresaById(Integer idEmpresa) throws Exception;
	BeanEmpresaPerfil getEmpresaPerfil(Integer idEmpresaPerfil) throws Exception;
	void alterarEmpresaAssinante(BeanEmpresaAssinante beanEmpresaAssinante) throws Exception;
	void alterarEmpresaPerfil(BeanEmpresaPerfil beanEmpresaPerfil) throws Exception;
	void alterarProfissional(BeanProfissionalAssinante bProfissionalAssinante) throws Exception;
	void alterarSenha(String conta, String senha) throws Exception;
	ArrayList<BeanVaga> buscarVagas(BeanVaga bVaga) throws Exception;
	ArrayList<BeanProfissionalCurriculo> getCurriculos() throws Exception;
	ArrayList<BeanProfissionalCurriculo> getCurriculosByProfissional(int idProfissional) throws Exception;
	ArrayList<BeanProfissionalAssinante> getProfissionaisByVaga(int vagaId) throws Exception;
	BeanVaga getVagaById(Integer idVaga) throws Exception;
	Boolean excluirCurriculo(Integer idCurriculo) throws Exception;
	List<BeanCurriculoCurso> getlistCurriculoCurso(Integer id) throws Exception;
	Boolean salvarOuAtualizarService(BeanProfissionalCurriculo bcurprof, List<BeanCurriculoConhecimentos> bcurconhecimento) throws Exception;
	Integer salvarCurriculoCurso(BeanCurriculoCurso bcurriculocurso) throws Exception;
    void inserirCandidato(BeanVaga vaga, BeanProfissionalCurriculo bCurriculo) throws Exception;
    void excluirCursoService(BeanCurriculoCurso bCurCurso) throws Exception;
    void excluirVaga(int idVaga) throws Exception;
    void encerrarVaga(BeanVaga bVaga) throws Exception;
    ArrayList<BeanMensagem> getMensagensCaixaEntrada() throws Exception;
    ArrayList<BeanMensagem> getMensagensCaixaSaida() throws Exception;
    void excluirMensagemCxEntrada(Integer idMensagem) throws Exception;
    void excluirMensagemCxSaida(Integer idMensagem) throws Exception;
    void excluirMensagensCxEntrada(ArrayList<BeanMensagem> clMensagens) throws Exception;
    void excluirMensagensCxSaida(ArrayList<BeanMensagem> clMensagens) throws Exception;
    BeanMensagem getMensagemById(Integer idMensagem) throws Exception;
    void setMensagemLida(BeanMensagem mensagem) throws Exception;
    void enviarMensagem(BeanMensagem mensagem) throws Exception;
    BeanAssinante getAssinanteById(Integer idAssinante) throws Exception;
    String getRelatorioCurriculoEnviado() throws Exception;
    void encerrarContaEmpresa(BeanEmpresaAssinante bEmpresaAssinante) throws Exception;
    void encerrarContaProfissional(BeanProfissionalAssinante bProfissionalAssinante) throws Exception;
    ArrayList<BeanProfissionalAssinante> buscarProfissionais(String nome, Integer idadeLimite, Integer estado, String curso, ArrayList<String> conhecimentos) throws Exception;
}